<?php

include_once('Score.php');
include_once('../Demineur.php');

	session_start();

	if (isset($_POST['difficulte'])) {
		$difficulte = $_POST['difficulte'];
		
		if ($difficulte == 'personnalisee') {
			echo '<h2>Meilleurs scores</h2><p>Aucun score à afficher</p>';
		}
		else
		{
			echo afficheScores(listeScores($difficulte), 3);
		}
	}
	else if (isset($_POST['difficulteScores'])) {
		$difficulteScores = $_POST['difficulteScores'];
		
		echo afficheMeilleursScores(listeScores($difficulteScores), $difficulteScores, 10);
	}
		
		
	// Retourne une liste de scores en fonction de la difficulté passée en paramètre
	
	function listeScores($difficulte) {
		$listeScores = array();
		
		$docXml = new DOMDocument();
		$docXml->load('scores.xml');
		
		$xpath = new DOMXPath($docXml);
		$listeUtilisateurs = $xpath->query('//' . $difficulte . '/utilisateur');
		
		foreach ($listeUtilisateurs as $clef => $util) {
			$login = $util->getElementsByTagName('login')->item(0)->nodeValue;
			$temps = $util->getElementsByTagName('temps')->item(0)->nodeValue;
			$date = $util->getElementsByTagName('date')->item(0)->nodeValue;
			$listeScores[$clef] = new Score($login, $temps, $date);
		}

		return $listeScores;
	}
	
	
	// Ajoute un score dans le fichier XML
	
	function ajouterScore($login, $temps, $difficulte) {
		$docXml = new DOMDocument();
		$docXml->load('demineur/scores/scores.xml');
		
		//Mettre temps début en session
		
		$utilisateur = $docXml->createElement('utilisateur');
		$log = $docXml->createElement('login', $login);
		$tps = $docXml->createElement('temps', $temps);
		$dat = $docXml->createElement('date', $time());
		$utilisateur->appendChild($log);
		$utilisateur->appendChild($tps);
		$utilisateur->appendChild($dat);
		
		$xpath = new DOMXPath($docXml);
		$listeUtilisateurs = $xpath->query('//' . $difficulte . '/utilisateur[temps < ' . $temps . ']');
		
		$refNode = $listeUtilisateurs->item($listeUtilisateurs->length-1);
		
		if($refNode->nextSibling) {
			$refNode->parentNode->insertBefore($utilisateur, $refNode->nextSibling);
		}
		else {
			$refNode->parentNode->appendChild($utilisateur);
		}
		
		$docXml->save('/zombiesweeper/demineur/scores/scores.xml');
	}
	
	
	// Retourne true si le nouveau score de l'utilisateur "mérite" d'être enregistré, sinon false
	
	function estUnBestScore($temps, $difficulte) {
		$best = false;
		$listeBestScores = array();
		$dateActuelle = time();
		$listeScores = $this->listeScores($difficulte);
		
		$cpt = 0;
		foreach ($listeScores as $score) {
			if ($dateActuelle - $score->date <= (60*60*24*7)) {
				$listeBestScores[$cpt] = $score;
				$cpt++;
			}
		}
		
		if ($cpt >= 9 && $listeBestScores[9] && $listeBestScores[9]->temps <= $temps) {
			$best = true;
		}
		
		return $best;
	}
	
	
	//Affiche la liste des $nbreScores meilleurs scores à la semaine, au mois, et depuis toujours (index.php)
	
	function afficheScores($listeScores, $nbreScores) {
	
		if (count($listeScores) < $nbreScores) {
			$nbreScores = count($listeScores);
		}
	
		$texte = '<h2>Meilleurs scores :</h2><table class=\'first\'><tr>';
		//Meilleurs scores de la semaine
		for ($i = 0; $i <= ($nbreScores - 1); $i++) {
			if (intval($listeScores[$i]->date) <= (time() + (60*60*24*7))) {
				if ($i == 0) {
					$texte .= '<th rowspan ='.$nbreScores.'>Semaine</th><td>'.$listeScores[$i]->login.'</td><td>'.date('i:s', $listeScores[$i]->temps).'</td></tr>';
				}
				else
				{
					$texte .= '<tr><td>'.$listeScores[$i]->login.'</td><td>'.date('i:s', $listeScores[$i]->temps).'</td></tr>';
				}
			}
		}
		
		$texte .= '</tr></table><table><tr>';
		
		//Meilleurs scores du mois
		for ($i = 0; $i <= ($nbreScores - 1); $i++) {
			if (intval($listeScores[$i]->date) <= (time() + (60*60*24*30))) {
				if ($i == 0) {
					$texte .= '<th rowspan ='.$nbreScores.'>Mois</th><td>'.$listeScores[$i]->login.'</td><td>'.date('i:s', $listeScores[$i]->temps).'</td></tr>';
				}
				else {
					$texte .= '<tr><td>'.$listeScores[$i]->login.'</td><td>'.date('i:s', $listeScores[$i]->temps).'</td></tr>';
				}
			}
		}
		
		$texte .= '</tr></table><table><tr>';
		
		//Meilleurs scores de tous les temps
		for ($i = 0; $i <= ($nbreScores - 1); $i++) {
			if ($i == 0) {
				$texte .= '<th rowspan ='.$nbreScores.'>Mois</th><td>'.$listeScores[$i]->login.'</td><td>'.date('i:s', $listeScores[$i]->temps).'</td></tr>';
			}
			else {
				$texte .= '<tr><td>'.$listeScores[$i]->login.'</td><td>'.date('i:s', $listeScores[$i]->temps).'</td></tr>';
			}
		}
			
		$texte .= '</tr></table>';
		
		return $texte;
	}
	
	
	//Affiche les $nbreScores meilleurs scores, en fonction de la difficulté (affichage de score.php)
	function afficheMeilleursScores($listeScores, $difficulteScores, $nbreScores) {
		
		if (count($listeScores) < $nbreScores) {
			$nbreScores = count($listeScores);
		}
	
		$texte = '<table class = \'tableau_score '.$difficulteScores.'\'><thead><tr><th colspan = \'3\'>Semaine</th></tr></thead><tbody>';
		
		//Meilleurs scores de la semaine
		for ($i = 0; $i <= ($nbreScores - 1); $i++) {
			if (intval($listeScores[$i]->date) <= (time() + (60*60*24*7))) {
				$texte .= '<tr><td>'.$listeScores[$i]->login.'</td><td>	------ </td><td>'.date('i:s', $listeScores[$i]->temps).'</td></tr>';
			}
		}
		
		$texte .= '</tr></table><table class = \'tableau_score '.$difficulteScores.'\'><thead><tr><th colspan = \'3\'>Mois</th></tr></thead><tbody>';
		
		//Meilleurs scores du mois
		for ($i = 0; $i <= ($nbreScores - 1); $i++) {
			if (intval($listeScores[$i]->date) <= (time() + (60*60*24*30))) {
				$texte .= '<tr><td>'.$listeScores[$i]->login.'</td><td>	------ </td><td>'.date('i:s', $listeScores[$i]->temps).'</td></tr>';
			}
		}
		
		$texte .= '</tr></table><table class = \'tableau_score '.$difficulteScores.'\'><thead><tr><th colspan = \'3\'>Tous</th></tr></thead><tbody>';
		
		//Meilleurs scores de tous les temps
		for ($i = 0; $i <= ($nbreScores - 1); $i++) {
			$texte .= '<tr><td>'.$listeScores[$i]->login.'</td><td>	------ </td><td>'.date('i:s', $listeScores[$i]->temps).'</td></tr>';
		}
			
		$texte .= '</tr></tbody></table>';
		
		return $texte;
	
	
	}
	
	

?>
